package com.lzy.cloud.payment.dtos.pay;


import com.lzy.cloud.payment.dtos.pay.BasePayDTO;
import lombok.Data;

import javax.xml.bind.annotation.XmlRootElement;

@Data
@XmlRootElement(name="tips")
public class WeixinPayDTO extends BasePayDTO {

	private static final long serialVersionUID = 1L;
	
	/**第三方類型：支付寶0 微信1*/
	private Integer way = 1;
	
	/**
	 * 微信分配给开发者的应用Id
	 */
	private String appid;
	
	/**
	 * 微信支付分配的商户号
	 */
	private String mch_id;
	
	/**
	 * 微信支付分配的终端设备号
	 */
	private String device_info;
	
	/**
	 * 随机字符串，不长于32位
	 */
	private String nonce_str;
	
	/**
	 * 交易标识  SUCCESS/FAIL
	 */
	private String result_code;
	
	/**
	 * 返回状态码     SUCCESS/FAIL    此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断
	 */
	private String return_code;
	
	/**
	 * 错误返回的信息描述
	 */
	private String err_code;
	
	/**
	 * 错误返回的信息描述  系统错误
	 */
	private String err_code_des;
	
	/**
	 * 用户在商户appid下的唯一标识
	 */
	private String openid;
	
	/**
	 * 交易类型   APP
	 */
	private String trade_type;
	
	/**
	 * 银行类型
	 */
	private String bank_type;
	
	/**
	 * 订单总金额，单位为分  微信过来金额都是整数
	 */
	private String total_fee;
	
	/**
	 * 货币类型
	 */
	private String fee_type;

	/**
	 * 现金支付金额
	 */
	private String cash_fee;
	
	/**
	 * 货币类型
	 */
	private String cash_fee_type;
	
	/**
	 * 代金券金额
	 */
	private String coupon_fee;
	
	/**
	 *代金券数量 
	 */
	private String coupon_count;
	
	/**
	 * 代金券或立减优惠ID,$n为下标，从0开始编号     (第一张优惠券)
	 */
	private String coupon_id_0;         
	
	/**
	 * 单个代金券或立减优惠支付金额,$n为下标，从0开始编号      (第一张优惠券)
	 */
	private String coupon_fee_0;
	
	/**
	 * 代金券或立减优惠ID,$n为下标，从0开始编号   (第二张优惠券)
	 */
	private String coupon_id_1;
	
	/**
	 * 单个代金券或立减优惠支付金额,$n为下标，从0开始编号     (第二张优惠券)
	 */
	private String coupon_fee_1;
	
	/**
	 * 微信支付订单号
	 */
	private String transaction_id;
	
	/**
	 * 商户系统内部订单号
	 */
	private String out_trade_no;
	
	/**
	 * 商家数据包，原样返回
	 */
	private String attach;
	
	/**
	 * 支付完成时间   微信数据如下：20170519143525
	 */
	private String time_end;

	/**
	 * 是否关注
	 */
	private String is_subscribe;
	
	public WeixinPayDTO(){
		super.setWay(way);
	}

	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
		super.setOut_trade_no(out_trade_no);
	}

}
